package cn.com.blueInfo.bpm.person.request;

import cn.com.blueInfo.bpm.common.request.BaseDTO;
import cn.com.blueInfo.bpm.common.request.BaseQueryDTO;
import cn.com.blueInfo.bpm.person.enums.OrganizeLevelType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 组织级别表 接收参数机校验
 * @author suxch
 * @since 2025-08-24 01:39:52
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "组织级别 接收参数及校验")
public class OrganizeLevelDTO extends BaseDTO {

    /** 级别编码 */
    @NotBlank(message = "级别编码 不能为空")
    @Schema(description = "级别编码")
    private String levelCode;
    /** 级别名称（如“公司”，“部门”） */
    @NotBlank(message = "级别名称 不能为空")
    @Schema(description = "级别名称（如“公司”，“部门”）")
    private String levelName;
    /** 组织级别：1-公司，2-部门，3-小组 */
    @NotNull(message = "组织级别 不能为空")
    @Schema(description = "组织级别：1-公司，2-部门，3-小组")
    private OrganizeLevelType levelType;

    /**
     * 组织级别 接收分页查询参数
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "组织级别 接收分页查询参数")
    public static class QueryDTO extends BaseQueryDTO {

        /** 级别编码 */
        @Schema(description = "级别编码")
        private String levelCode;
        /** 级别名称（如“公司”，“部门”） */
        @Schema(description = "级别名称（如“公司”，“部门”）")
        private String levelName;
        /** 组织级别：1-公司，2-部门，3-小组 */
        @Schema(description = "组织级别：1-公司，2-部门，3-小组")
        private OrganizeLevelType levelType;

    }

    /**
     * 组织级别 接收部分更新参数及校验
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "组织级别 接收部分更新参数及校验")
    public static class UpdatePartialDTO extends BaseDTO {}

}